In multi-processor systems, memory can be configured to improve performance. One approach is to spread memory across different memory controllers, which approach is referred to as interleaving. A desirable interleave distributes memory substantially evenly across available memory controllers. As memory is more evenly distributed, large contiguous arrays of data touch each of the memory controllers substantially the same amount. Therefore, by interleaving memory, the memory is more evenly distributed so as to mitigate hot spots. Hot spots can occur, for example, if a given memory controller is overloaded due to unevenly large distributions of contiguous data being locally associated with the given memory controller.